今天要整合先前所學,使用colab盤中即時計算技術指標,當技術指標達到我們要的條件時,發送訊息到line!
盤中計算技術指標,通常是每隔一段時間計算一次,例如每五分鐘計算一次一分K的5MA,發送line通知顯示現在的收盤價在一分K的5MA之上或之下,寫法如下,
使用
date.today()
自動取得今天的日期,
from datetime import date
date.today()
today=str(date.today())
使用while迴圈與
datetime.now().minute %5==0
達成每五分鐘計算一次技術指標的目的。
每五分鐘取得一分K,用
talib.SMA(df['Close'],5) 
計算一分K的5MA,判斷目前收盤價在5MA之上或是之下並發送line訊息,因為本範例是每五分鐘計算一次訊號,所以每次計算完可以用
time.sleep(60)
休息個60秒(可自由選擇)
import time 
from datetime import datetime
while True:
  if (datetime.now().minute %5 == 0) :  #每五分鐘計算一次
    kbars = api.kbars(api.Contracts.Futures.TXF['TXFJ1'], start=today, end=today)
    df = pd.DataFrame({**kbars})
    df.ts = pd.to_datetime(df.ts)
    df.set_index('ts',inplace=True) ##將時間設為index
    SMA_5 = talib.SMA(df['Close'],5)
    if df['Close'].iloc[-1] < SMA_5.iloc[-1]:
      msg = '台指目前在一分K的5MA之下'  
      lineTool.lineNotify(lineC,msg)  
      time.sleep(60)   #每次計算完休息60秒
    elif df['Close'].iloc[-1] > SMA_5.iloc[-1]:
      msg = '台指目前在一分K的5MA之上'  
      lineTool.lineNotify(lineC,msg) 
      time.sleep(60)   #每次計算完休息60秒
透過以上的範例程式碼,簡單介紹如何用一分K每五分鐘計算一次技術指標並發送line訊息,可以搭配先前幾篇系列文,試試看如何每隔一段時間計算5分K的技術指標並發送line訊息。